/* Sentinel - IRC Statistical and Operator Services
** config.h - Hard coded configuration information
**
** Copyright W. Campbell and others.  See README for more details
** Some code Copyright: Jonathan George, Kai Seidler, ircd-hybrid Team,
**                      IRCnet IRCD developers.
**
** $Id: config.h 10 2010-02-02 01:12:49Z dubkat $
*/

#ifndef CONFIG_H
#define CONFIG_H

/* These settings are based on the --prefix option to configure, or the
** current directory.  They do not have to be changed.
*/
#define DPATH PREFIX
#define SPATH PREFIX "/bin/sentinel"

/* Define this to enable encrypted passwords in operator blocks.  Any
** encryption algorithm supported by your system's crypt library is
** supported by Sentinel.
*/
#define CRYPT

/* If you use Bahamut or another ircd with an ASCII casemapping
** (CASEMAPPING=ascii) rather than the original IRC casemapping
** (CASEMAPPING=rfc1459), define this.  This is always enabled on
** Bahamut.
**
** An ASCII casemap treats each symbol as its own character, only the
** letters a-z/A-Z have cases.
**
** An RFC1459 casemap treats the following character pairs as lower and
** upper case variants:  [ and {, ] and }, \ and |, ~ and ^.
**
** The 005 token shown when you connect to the server and in VERSION
** will tell you what casemapping your server uses.  Casemappings must
** be the same across the network.
*/
#undef USE_ASCII_CASEMAP

/* Define this to hide all cases where the uplink's hostname/IP can show
** ...even to opers.
**
** The only way to see the uplink's hostname is by looking in the conf
** file.
*/
#undef HIDE_IPS

/* Enable the more secure method of communicating with the service,
** PRIVMSG user@server :message.  This is quite stable and usable, and is
** now enabled by default.  It does SOMEWHAT increase CPU utilization, but
** not by much
*/

#define SUPPORT_MSG_UH

/* Only allow the secure method of communicating with the service, disallowing
** PRIVMSG nick :message.
*/

#undef DISALLOW_NICK_PRIVMSG

/* This is another new feature... This is for support of the Hybrid 6
** NOTICE/PRIVMSG opers@server feature.  If this is enabled, all messages
** to opers@<my name> will be forwarded on to all logged in users.
** This does increase CPU usage so it is disabled by default
*/

#undef SUPPORT_MSG_OPERS

/* If you wish the Stats service to track server VERSION's, and report them
** on a SERVER request and on the HTML dump, define this.  It will increase
** memory usage, CPU, and bandwidth on the network.  It won't be terribly
** noticeable though, and may be worth the extra
*/

#undef TRACK_VERSION

/* If you wish the Stats service to track server ADMIN replies, and report
** them on a SERVER request and on the HTML dump, define this.  It will
** increase the memory usage, CPU, and bandwidth on the network, and may
** annoy opers.  It won't be terribly noticable though, and may be worth
** anything it does.
*/

#undef TRACK_ADMIN

/* Do you wish to track gecos (real name field) on users?  This feature will
** greatly increase memory usage, so it is disabled by default.
*/
#undef TRACK_GECOS

/* Do you wish to track CTCP VERSION replies?  MonServ must be enabled,
** as it issues the CTCP VERSION query when a user connects (outside of
** the initial burst).  This is a massive increase in memory and network
** bandwidth, but can POTENTIALLY help a network.
*/
#undef TRACK_CTCPVERSION

/* On Hybrid 7 (and Hybrid 6 if you have an admin mode patch), this option
** will show opers as A O o (with o most likely never being used)
**
** Idea from Xride's ModeServ for Dal
*/

#define OPER_MODES

/* This will enable or disable QUOTE/RAW
** #define it to have it enabled
**
** WARNING:  Use this at your own risk!  The developers are not
** responsible for any damage this may cause.
*/

#undef ENABLE_QUOTE

/* Allow operators with the 'op' permission flag the ability to
** op users in channels.
*/

#undef ENABLE_OP

/* Allow operators with the 'takeover' permission flag the ability
** to take over channels with AdminServ.
*/

#undef ENABLE_TAKEOVER

/* Enable the option that will cause the service to gracefully exit
** after a certain number of collisions in a certain period of time
** This prevents 2 services running with the same nickname from massively
** colliding each other.  Disable this on a centrally controlled network, 
** where issues like this cannot occur.
**
** NOTE:  This does mean that an abusive admin can force the service to 
**        die quite easily.  Tradeoffs.....
*/

#define DIE_ON_MASS_COLLIDE

/* Some networks use a service to detect and remove clients with "bogus"
** timestamps for nicks.  This causes a problem for Sentinel as it, by
** default, will introduce its users with a timestamp of '1' (intended
** to prevent abusers from taking the nick on a server where the services
** are not Q: lines/resv'ed).  Defining this will use the current time as
** the nick timestamp, but may cause additional issues and abuses later.
*/

#undef USE_CURRENT_TS

/* The spam service has been removed.  There are far better ways to track
** spam, use one of them.
*/

/* Define this option to enable the Split service.  This service will
** track, log, and report netsplits.
*/

#undef SPLITSERV

/* Define this option to enable the Statistical service.  This is here to
** disable by people who may want to run a split service only, or have
** a service that has no user interface, only a web dump.  undef will ONLY
** prevent the bot from appearing on the network.  Statistics are still
** properly kept.
** This is enabled by default
*/

#define STATSERV

/* Support public triggers for StatServ.  This is restricted, in that
** only one channel is (and will be) supported, the channel StatServ
** listens to is not the channel SplitServ listens to, and the commands
** supported are small subsets of the full StatServ functions.
**
** This will vastly increase CPU and bandwidth usage on your network.
*/

#undef PUBSTATS

/* Define this option to enable the Jupe service.  Jupe is a touchy feature,
** so it is off by default.
*/

#undef JUPESERV

/* Define this option to enable the Monitor service.  The Monitor service
** provides statistics on domains, hostnames, and clones in a similar
** manner to EFnet's services.xo.  The clones feature is completely
** TCM and oomon compatible
*/
#define MONSERV

/* Define to enable the Listing service, allowing users to search for
** channels (like IRCnet's ALIS).
**
** Note:  This is supported on Bahamut out of the box.
**        For ircd-ratbox, you must have topicburst = yes; in the connect
**        block for Sentinel.
**        For ircd-hybrid-7, you must use either a ratbox compatible m_tb.so
**        module (preferred) or the m_tburst.so contrib module.
**        For ircd-hybrid-6, you're on your own.
*/
#undef LISTSERV

/* Define this option to enable the SCANHOST command.  This can be
** disable for networks who do not wish their users to be listed to
** operators outside of the standard WHO and TRACE methods.
*/
#define ENABLE_SCANHOST

/* Do you wish to consider all non-idented users on the same hostname
** clones or not?
** Not Clones (undef):  EFnet services.xo -like, can miss some clones
**    Clones (define):  Can get some false positives
*/
#undef MON_IDENT_CLONES

/* By default, the monitor service tracks domain statistics for
** non-resolving IPv6 hosts as the IP with a /96 mask.  Define this
** if you would rather have a /64 mask.
*/
#undef MON_V6_64_MASK

/* Do you wish to enable TCM/oomon compatible SERVICES DRONES support?
** This requires conf lines to be added for each drone type, and is
** CPU intensive
*/
#undef MON_DRONES

/* If you have enabled the alert channel, do you wish to send drone
** matches to a drone alert channel?
*/
#undef DRONES_ALERT

/* Define this to the channel where drone alerts are sent, undef it for
** the main alert channel.  Do NOT set it to the alert channel.
*/ 
/* #define DRONES_CHANNEL "#drones" */

/* Define this if you use HostServ or another program that changes hostnames
** or usernames of users.  This implementation handles the pseudostandard
** commands SVSHOST, CHGHOST, and SETHOST for host changing, and SVSIDENT,
** CHGIDENT, and SETIDENT for username changing.
*/
#undef SUPPORT_HOSTSERV

/* The Administraion Service can now report things to channels.
** There are currently two different options here, both of which chan
** be independently enabled.
*/

/* ALERTMODE will send important messages that are logged to ALERTCHAN.
** Don't count on the channel being a define though, it may soon go into
** the conf.
*/

#undef ALERTMODE
#define ALERTCHAN "#stats-alert"

/* SPYMODE will send client connect/disconnects, non command user PRIVMSG's,
** and misc commands to the service to SPYCHAN
**
** This is an invasion of privacy, and I do not support it.
*/

#undef SPYMODE
#define SPYCHAN "#stats-spy"

/* USE_OPERSPY on any of the supported Hybrid/TSora protocols will use the
** new EFnet standard ENCAP * OPERSPY reporting tool to report all uses of
** the "spy" functions in AdminServ (.*list, .whois, .cmembers) to any
** connected listening oper (umode +Z in most supporting ircd's).
*/
#undef USE_OPERSPY

/* Only enable ONE - There is no checking or sanity checking on this
** option yet...
**
** Supported types...
** IRCD_HYBRID
** IRCD_HYB6
** IRCD_HYB7
** IRCD_RATBOX
** IRCD_BAHAMUT
** IRCD_HYBSVS
** IRCD_HYBBG
**
** Look at the README file for more detailed descriptions of these IRCD
** types.
*/ 
/* #define IRCD_HYBRID */
/* #define IRCD_HYB6 */
/* #define IRCD_HYB7 */
#define IRCD_RATBOX
/* #define IRCD_BAHAMUT */
/* #define IRCD_HYBSVS */
/* #define IRCD_HYBBG */

/* Define if this is a TS6 Network */
#define TS6

/* Set memory debugging options?  This is likely FreeBSD specific.
** Linux glibc by default will clobber free()'ed memory.
**
** This WILL adversely affect performance
*/
#undef MEMDEBUG

/* STOP STOP */
#if !defined(IRCD_HYBRID) && !defined(IRCD_HYB6) && !defined(IRCD_HYB7) && \
    !defined(IRCD_BAHAMUT) && !defined(IRCD_HYBSVS) && !defined(IRCD_HYBBG) && \
    !defined(IRCD_RATBOX)
#error All ircd types undefined, please set one.
#endif

#if defined(USE_OPERSPY) && (defined(IRCD_HYBRID) || defined(IRCD_BAHAMUT))
#undef USE_OPERSPY
#warning USE_OPERSPY will not work on the chosen ircd type.
#endif

#ifdef IRCD_HYBBG
#define IRCD_HYBSVS
#endif

#ifndef STATSERV
#undef PUBSTATS
#endif

#ifdef IRCD_BAHAMUT
#define USE_ASCII_CASEMAP
#endif

#ifndef MON_DRONES
#undef DRONES_CHANNEL
#endif

#ifndef MONSERV
#undef TRACK_CTCPVERSION
#endif

/* If we disallow the PRIVMSG nick method, be sure and enable PRIVMSG u@h
** or else we cannot communicate with the service
*/
#ifdef DISALLOW_NICK_PRIVMSG
# define SUPPORT_MSG_UH
#endif

#endif /* CONFIG_H */
